package cn.zwy.other.network;

import java.nio.ByteBuffer;

/**
 * &#064;description: ByteBuffer是nio/aio编程所必须掌握的一个数据结构，<BR/>
 * 也是掌握tio所必须要学会的基础知识。 <BR/>
 * ByteBuffer 就是一个byte[] 数组 字节缓冲区<BR/>
 * &#064;author: monster <BR/>
 * &#064;date: 2023/4/18 11:05 <BR/>
 */
public class ByteBufferDemo {

    /**
     * ByteBuffer.allocate(10) 初始化一个字节缓冲区 最大容量为 10
     * <p>
     * java.nio.HeapByteBuffer[pos=1 lim=10 cap=10]
     * pos表示在哪个位置开始写数据或者读数据
     * lim表示bytes事迹装了多少数据
     * cap表示bytes的容量
     *
     * @return
     */
    public static ByteBuffer a() {
        ByteBuffer byteBuffer = ByteBuffer.allocate(10);
        System.out.println(byteBuffer + "***************初始化字节缓冲区");
        byteBuffer.put((byte) 2);
        System.out.println(byteBuffer + "***************添加一个数据");
        System.out.println("开始读取字节缓冲流数据");
        byteBuffer.position(0);//回到了字节一开始的位置
        System.out.println(byteBuffer + "***************回到了字节一开始的位置");
        //****************************************
        System.out.println(byteBuffer.limit(1));
        System.out.println(byteBuffer.get() + "***************读取一个位置数据");
        System.out.println(byteBuffer + "***************读取之后pos会发生位移");

        //        System.out.println(byteBuffer.get()); 因为设置了limit所以再读取会报错


        return byteBuffer;
    }


    public static void main(String[] args) {
        a();
    }
}
